// 首页
Page({
  data: {
    pageTitle: "首页",
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse("button.open-type.getUserInfo"),
    // 健康数据统计 - 更丰富的数据模型
    healthData: {
      calories: 1200,
      steps: 6500,
      water: 1.2,  // 单位：升
      sleep: 7.5,  // 单位：小时
      protein: 65, // 单位：克
      carbs: 220,  // 单位：克
      fat: 55,     // 单位：克
      todayTarget: 84 // 今日目标完成率（百分比）
    },
    // 营养小贴士列表
    tipsList: [
      "均衡饮食是身体健康的基础，建议每天摄入足够的蛋白质、纤维和维生素。",
      "多喝水有助于新陈代谢，成年人每天应喝约2000ml水。",
      "早餐是一天中最重要的一餐，应包含碳水化合物、蛋白质和健康脂肪。",
      "深色蔬菜含有更多抗氧化剂，有助于预防慢性疾病。",
      "适量食用坚果可以摄入健康脂肪，但注意控制量。",
      "吃辣能燃烧更多卡路里？事实上这只能增加约10卡路里的消耗，但确实能促进新陈代谢。",
      "香蕉含有色氨酸，可以帮助提高血清素水平，改善心情和睡眠质量。",
      "西红柿熟吃比生吃更有营养，加热能释放更多的番茄红素。",
      "黑巧克力中的可可多酚是强力抗氧化剂，适量食用有益心血管健康。",
      "酸奶含有大量益生菌，有助于维持肠道健康，但要选择无添加糖的产品。",
      '蓝莓被称为"超级食物"，含有丰富的抗氧化物质，有助于提高记忆力。',
      '每天一个苹果真的能"远离医生"！苹果富含膳食纤维和抗氧化剂。',
      "牛油果是少有的富含单不饱和脂肪酸的水果，有助于降低坏胆固醇。",
      "橙子和柠檬等柑橘类水果富含维生素C，能增强免疫力和皮肤健康。",
      "鸡蛋虽含胆固醇，但并不会显著增加血液中的胆固醇水平，反而富含优质蛋白质。",
      "三文鱼富含欧米伽-3脂肪酸，有助于改善心脏健康和降低炎症。",
      "姜能缓解恶心和消化不良，还有抗炎特性，特别适合冬季食用。",
      "每天适量饮用咖啡可能有助于降低患2型糖尿病、帕金森和某些癌症的风险。",
      "绿茶富含抗氧化剂EGCG，可能有助于提高代谢率和燃烧脂肪。",
      "饭后漱口可以预防蛀牙，但刷牙应等待30分钟，以免损伤牙釉质。",
      "紫薯比普通土豆营养价值更高，含有花青素等抗氧化物质。",
      "代糖并不总是减肥的好帮手，它们可能会增加对甜食的渴望并影响肠道菌群。",
      "蒜头在捣碎后静置10分钟再烹饪，其中的大蒜素含量会显著增加。",
      "吃完高脂肪食物后喝绿茶，有助于减少脂肪吸收，促进新陈代谢。",
      "每天吃一把坚果（约30克）可以减少心脏病风险达30%。",
    ],
    currentTip: "",
  },

  onLoad() {
    // 检查登录状态
    const token = wx.getStorageSync("token");
    if (!token) {
      wx.showToast({
        title: "请先登录",
        icon: "none",
        duration: 2000,
        success: () => {
          setTimeout(() => {
            wx.redirectTo({
              url: "/pages/index/index",
            });
          }, 1000);
        },
      });
      return;
    }

    // 页面加载时的逻辑
    console.log("首页加载成功");

    // 生成随机健康数据（模拟真实场景）
    this.generateHealthData();

    // 从提示列表中随机选择一条
    this.setRandomTip();

    // 为了确保界面更新，这里再次设置一下
    if (!this.data.currentTip && this.data.tipsList.length > 0) {
      this.setData({
        currentTip: this.data.tipsList[0],
      });
    }
  },

  onShow() {
    // 页面显示/切入前台时的逻辑
    // 每次页面显示时更新健康数据，制造数据在变化的效果
    this.updateHealthData();
  },

  onHide() {
    // 页面隐藏/切入后台时的逻辑
  },

  onPullDownRefresh() {
    // 下拉刷新时的逻辑
    wx.stopPullDownRefresh();
  },

  // 设置随机提示
  setRandomTip: function () {
    const tipsList = this.data.tipsList;
    // 确保新选择的提示与当前不同
    let randomIndex;
    do {
      randomIndex = Math.floor(Math.random() * tipsList.length);
    } while (
      tipsList[randomIndex] === this.data.currentTip &&
      tipsList.length > 1
    );

    this.setData({
      currentTip: tipsList[randomIndex],
    });
  },

  // 刷新提示
  refreshTip: function () {
    this.setRandomTip();
    wx.showToast({
      title: "已更新小贴士",
      icon: "none",
      duration: 1500,
    });
  },

  // 功能区域点击处理
  goToFeature: function (e) {
    const feature = e.currentTarget.dataset.feature;
    console.log('点击了功能:', feature);
    
    // 防止重复点击
    const now = Date.now();
    if (this.lastTapTime && (now - this.lastTapTime < 1000)) {
      console.log('点击过于频繁，已忽略');
      return;
    }
    this.lastTapTime = now;
    
    // 构建跳转参数
    const url = '/pages/nutrition/index';
    let targetSection = '';
    
    switch (feature) {
      case "diet":
        console.log('正在跳转到饮食记录页面...');
        // 跳转到健康状态区域
        targetSection = 'health-overview';
        break;
      case "plan":
        console.log('正在跳转到营养方案页面...');
        // 跳转到今日推荐套餐区域
        targetSection = 'meal-recommendations';
        break;
      case "analysis":
        console.log('正在跳转到健康分析页面...');
        // 跳转到营养建议区域
        targetSection = 'nutrition-tips';
        break;
      case "community":
        // 暂未开发，显示提示
        wx.showToast({
          title: "功能即将上线",
          icon: "none",
          duration: 2000,
        });
        return;
      default:
        console.log("功能暂未开放");
        wx.showToast({
          title: "功能即将上线",
          icon: "none",
        });
        return;
    }
    
    // 使用带参数的导航方式
    if (targetSection) {
      // 使用全局变量存储目标部分ID
      getApp().globalData = getApp().globalData || {};
      getApp().globalData.targetSection = targetSection;
      
      // 跳转到营养页面
      wx.switchTab({
        url: url,
        success: function() {
          console.log('跳转成功，目标区域:', targetSection);
        },
        fail: function(err) {
          console.error('跳转失败:', err);
          wx.showToast({
            title: '跳转失败',
            icon: 'none'
          });
        }
      });
    }
  },

  // 生成随机的健康数据
  generateHealthData: function() {
    // 获取当前时间，用于生成与当天时间相关的数据
    const now = new Date();
    const hour = now.getHours();
    
    // 根据一天中的时间计算合理的热量摄入和步数
    // 早上热量少，步数少；中午和晚上热量和步数逐渐增加
    const timeRatio = Math.min(hour / 24, 0.95); // 0-0.95的系数
    
    // 基础目标值（一天的理想摄入/活动量）
    const baseCalories = 2000 + Math.floor(Math.random() * 200); // 基础热量2000±200
    const baseSteps = 8000 + Math.floor(Math.random() * 1000);   // 基础步数8000±1000
    
    // 根据时间比例计算当前进度
    const currentCalories = Math.floor(baseCalories * timeRatio * (0.9 + Math.random() * 0.2));
    const currentSteps = Math.floor(baseSteps * timeRatio * (0.9 + Math.random() * 0.2));
    
    // 其他健康数据同理
    const waterTarget = 2.5; // 目标饮水量2.5升
    const currentWater = parseFloat((waterTarget * timeRatio * (0.8 + Math.random() * 0.4)).toFixed(1));
    
    // 蛋白质、脂肪、碳水根据热量按比例计算
    const proteinRatio = 0.25; // 蛋白质占25%热量
    const fatRatio = 0.25;     // 脂肪占25%热量
    const carbsRatio = 0.5;    // 碳水占50%热量
    
    // 每克蛋白质和碳水4卡路里，每克脂肪9卡路里
    const proteinGrams = Math.floor((currentCalories * proteinRatio) / 4);
    const fatGrams = Math.floor((currentCalories * fatRatio) / 9);
    const carbsGrams = Math.floor((currentCalories * carbsRatio) / 4);
    
    // 计算目标完成率
    const caloriesCompletion = currentCalories / baseCalories;
    const stepsCompletion = currentSteps / baseSteps;
    const waterCompletion = currentWater / waterTarget;
    const targetCompletion = Math.floor(((caloriesCompletion + stepsCompletion + waterCompletion) / 3) * 100);
    
    // 更新数据
    this.setData({
      'healthData.calories': currentCalories,
      'healthData.steps': currentSteps,
      'healthData.water': currentWater,
      'healthData.protein': proteinGrams,
      'healthData.carbs': carbsGrams,
      'healthData.fat': fatGrams,
      'healthData.todayTarget': targetCompletion
    });
  },
  
  // 小幅度更新健康数据（模拟数据实时变化）
  updateHealthData: function() {
    // 获取当前数据
    const { calories, steps, water } = this.data.healthData;
    
    // 小幅度增加数据（模拟用户活动）
    const newCalories = calories + Math.floor(Math.random() * 50);
    const newSteps = steps + Math.floor(Math.random() * 300);
    const newWater = parseFloat((water + Math.random() * 0.1).toFixed(1));
    
    // 更新蛋白质、脂肪和碳水
    const proteinRatio = 0.25;
    const fatRatio = 0.25;
    const carbsRatio = 0.5;
    
    const newProtein = Math.floor((newCalories * proteinRatio) / 4);
    const newFat = Math.floor((newCalories * fatRatio) / 9);
    const newCarbs = Math.floor((newCalories * carbsRatio) / 4);
    
    // 计算新的目标完成率
    const baseCalories = 2000;
    const baseSteps = 8000;
    const baseWater = 2.5;
    
    const caloriesCompletion = newCalories / baseCalories;
    const stepsCompletion = newSteps / baseSteps;
    const waterCompletion = newWater / baseWater;
    const newTargetCompletion = Math.floor(((caloriesCompletion + stepsCompletion + waterCompletion) / 3) * 100);
    
    // 更新数据
    this.setData({
      'healthData.calories': newCalories,
      'healthData.steps': newSteps,
      'healthData.water': newWater,
      'healthData.protein': newProtein,
      'healthData.carbs': newCarbs,
      'healthData.fat': newFat,
      'healthData.todayTarget': newTargetCompletion
    });
  },
});
